Those aren't actual I/O requests (and hence are of no interest here
anyway). Since they don't get copied into struct vcpu, looking at that
copy reads whatever was left there. Use the state of the request to
determine its validity.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
Release-acked-by: Wei Liu <wei.liu2@citrix.com>
{
const ioreq_t *r = &v->arch.hvm_vcpu.hvm_io.io_req;
+ if ( r->state != STATE_IOREQ_READY )
+ return 0;
ASSERT(r->type == IOREQ_TYPE_COPY);
if ( r->dir == IOREQ_WRITE && r->size == 4 && !r->data_is_ptr
&& !(r->data & PCI_MSIX_VECTOR_BITMASK) )